package cn.tedu.net.collection.collection2;

import java.util.HashSet;
import java.util.Set;

/*给自定义对象去重测试*/
public class Test3_HashSet2 {
    public static void main(String[] args) {
        Set<Student> set=new HashSet<>();
        Student s1=new Student("jack",25,"耗子洞");
        Student s2=new Student("tom",25,"猫窝");
        Student s3=new Student("mangder",25,"狗屋");

        Student s4=new Student("tom",25,"猫窝");
        Student s5=new Student("mangder",25,"狗屋");
        System.out.println(s2.hashCode());
        System.out.println(s4.hashCode());

        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        set.add(s5);
        System.out.println(set);
        /*
        总结:重复的给set集合中添加相同属性的对象为什么没有去重?
        翻阅源码得知需要两个条件:
        1.保证两个对象的哈希码值相同
        --底层默认提供的是HashCode提供的哈希码值,每次创建对象默认的哈希码值都是不同的
        解决方案:重写HashCode生成一样的哈希码值
        2.保证两个对象的equals进行比较时返回true
        --底层默认使用的时==进行值得比较
        地址值相同时才返回true
        解决方案:重写equals,进行内容的比较
         */

    }
}
